//*** Guidance generated code ***//
using System.Linq;
using System.Diagnostics.Contracts;
using System.Collections.Generic;
using System;
using System.Web.Mvc;

using $safeprojectname$.Service;

namespace $safeprojectname$
{
    public interface IFilterBinder<TFilter, in TID>
        where TFilter : class, IFilter<TID>
    {
        /// <summary>
        ///     Binds data into the filtering object.
        ///     Could be (re)used for UI binding as well as for any other purposes.
        /// </summary>
        TFilter BindFilter(TFilter filter
            , IValueContainer valueContainer
            , string prefix = null
            , string[] includeProperties = null
            , string[] excludeProperties = null);
    }
}